package cmd

import (
	"fmt"
	"github.com/spf13/cobra"
	"migration-tool/common"
	"migration-tool/schedule"
	"os"
)

func init() {
	rootCmd.AddCommand(mergeCmd)
	mergeCmd.PersistentFlags().BoolVar(&Force, "force", false, "不使用之前的任务进度")
}

var mergeCmd = &cobra.Command{
	Use:   "merge [--config=filepath]",
	Short: "执行仓库全量导出和增量导出结果的合并工作",
	Run: func(cmd *cobra.Command, args []string) {
		if ConfigFilePath == "" {
			ConfigFilePath = common.GlobalDefaultConfigPath
		}

		coordinatorArgs := schedule.CoordinatorArgs{
			ConfigPath:  ConfigFilePath,
			Export:      false, // merge可以看作在export执行结束后的工作，所以属于import
			UseProgress: !Force,
		}

		c, err := schedule.MakeCoordinator(coordinatorArgs)
		if err != nil {
			fmt.Println(err)
			os.Exit(1)
		}

		err = c.Merge()
		if err != nil {
			c.RecordLog("Merge命令执行过程出现错误", err)
		} else {
			c.RecordLog("Merge命令执行完成", nil)
		}
		return
	},
}
